package com.hzj.recipe.controller;

import com.baomidou.mybatisplus.extension.api.ApiController;
import com.baomidou.mybatisplus.extension.api.R;
import com.hzj.recipe.entity.Comment;
import com.hzj.recipe.service.CommentService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 评论表(Comment)表控制层
 *
 * @author makejava
 * @since 2024-01-04 11:25:28
 */
@RestController
@RequestMapping("comment")
public class CommentController extends ApiController {
    /**
     * 服务对象
     */
    @Resource
    private CommentService commentService;

    /**
     * 分页查询所有数据
     *
     * @param index 第几页
     * @param size 每页个数
     * @param comment 查询实体
     * @return 所有数据
     */
    @GetMapping("selectAll")
    public R selectAll(Integer index, Integer size, Comment comment) {
        return success(this.commentService.listAll(index,size,comment));
    }

    /**
     * 根据食谱id分页查询该食谱的所有评论
     *
     * @param index 第几页
     * @param size 每页个数
     * @param recipeId 食谱id
     * @return 所有数据
     */
    @GetMapping("selectByRecipeId/{recipeId}")
    public R selectByRecipeId(Integer index, Integer size, @PathVariable Serializable recipeId) {
        return success(this.commentService.listAllByRecipeId(index,size,recipeId));
    }

    /**
     * 通过外键分页查询我的所有回复
     *
     * @param targetId 外键
     * @return 所有数据
     */
    @GetMapping("selectByCommentParentId/{targetId}")
    public R selectByCommentParentId(Integer index, Integer size, @PathVariable Serializable targetId) {
        return success(this.commentService.listAllByCommentParentId(index,size,targetId));
    }

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @GetMapping("/select/{id}")
    public R selectOne(@PathVariable Serializable id) {
        return success(this.commentService.getById(id));
    }

    /**
     * 新增数据
     *
     * @param comment 实体对象
     * @return 新增结果
     */
    @PostMapping("/insert")
    public R insert(@RequestBody Comment comment) {
        comment.setCreateTime(LocalDateTime.now());
        return success(this.commentService.save(comment));
    }

    /**
     * 修改评论，不需要的功能
     *
     * @param comment 实体对象
     * @return 修改结果
     */
    @PutMapping("/update")
    public R update(@RequestBody Comment comment) {
        return success(this.commentService.updateById(comment));
    }

    /**
     * 删除数据
     *
     * @param idList 主键结合
     * @return 删除结果
     */
    @DeleteMapping("/delete")
    public R delete(@RequestParam("idList") List<Long> idList) {
        return success(this.commentService.removeByIds(idList));
    }
}

